昨天我們建好一個名為Members
的資料表,今天我們要做的就是在Python Shell
裡面透過Python
程式碼,去新增數筆紀錄(Record
)到資料表上。
而在新增完紀錄後,我們會再透過修改預先寫好的view
方法(也就是index
),把加到Members
資料表上的紀錄傳到訪問者那端並顯示在網頁上。
要進到Python Shell
開始撰寫Python
要先做以下操作 :
打開CMD並切換到虛擬環境(python venv
)的資料夾路徑下
(實際venv
路徑不一定會跟我一樣喔!)
輸入以下指令啟動虛擬環境
Scripts\activate.bat
啟動虛擬環境後結果如下:
接著切換路徑到Django Project
所在的資料夾下
再輸入以下指令進到Shell
裡面
py manage.py shell
進入Shell
後依序輸入以下指令
from members.models import Members
Members
資料表 import 進來Members.objects.all()
QuerySet
,即存放Members
資料表上所有Record
的List
(目前資料表是空的,沒有任何紀錄)
member = Members(firstname='Emil', lastname='Refsnes')
member
的 variable,用來存放欲新增的紀錄Members
物件即為新的一筆紀錄並在括號內指定資料欄位的值member.save()
Members.objects.all().values()
QuerySet
並顯示現在Members
資料表上的紀錄和其詳細欄位值(在QuerySet
裡面可以看到剛剛新增的那筆Record
)
這邊跟剛剛新增紀錄的做法是一樣的,只是改成建立多筆紀錄後,再透過For
迴圈把它一個個存放到Members
資料表上。
建立4筆新紀錄,然後存到List
裡面,最後透過For
迴圈將記錄實際存放到資料表上
一樣用Members.objects.all().values()
檢視Members
上的紀錄
到這邊基本上就學會了如何在Python Shell
裡,撰寫Python
程式碼去實際在 Memebers
資料表新增紀錄囉! 緊接著我們要把這些資料表上的紀錄顯示在瀏覽器的畫面裡。
還記得我們在【Day 07】初探 Django Templates 的時候,跑去修改members
的views.py
,讓它回傳網頁到瀏覽器上嗎? 這次我們一樣要去修改index
這個方法,讓它把資料表裡面的資料回傳並顯示在瀏覽器的畫面上。
原本的members.py/views.py
長這樣 :
from django.http import HttpResponse
from django.template import loader
def index(request):
template = loader.get_template('myfirst.html')
HttpResponse(template.render())
我們現在需要把它改成這樣 :
from django.http import HttpResponse
from django.template import loader
from .models import Members
def index(request):
mymembers = Members.objects.all().values()
output = ""
for x in mymembers:
output += x["firstname"]
return HttpResponse(output)
from .models import Members
Members
這張資料表 import 進來mymembers = Members.objects.all().values()
mymembers
存放Members
上的所有紀錄,這些紀錄會被包在一個List
裡面被回傳output
for x in mymembers: ...
For
迴圈逐一將Members
上每筆紀錄的firstname
欄位值和output
串接在一起return HttpResponse(output)
在Run Server
之前,我們要先從Python Shell
裡面退出來,輸入以下指令退出Shell
:
quit()
接著輸入前面提過數次的指令開啟Server
:
py manage.py runserver
在瀏覽器輸入並前往網址http://127.0.0.1:8000/members/
檢視成果 :
今天我們學會如何在
Python Shell
裡面新增資料表紀錄並在瀏覽器上檢視它們。明天會是系列文第一次的番外篇,內容主要是介紹Django
的ORM
是什麼?